home *** CD-ROM | disk | FTP | other *** search
/ System Booster / System Booster.iso / Archives / StartupTools / Shutdown2_0.lha / Shutdown.dok < prev    next >
Encoding:
Text File  |  1992-04-10  |  16.2 KB  |  325 lines

  1. ============================== Shutdown 2.0 ===============================
  2. ===========================================================================
  3. Ein  Paket, das das Neustarten und Ausschalten des Rechners sicherer macht.
  4. © Copyright 1992 by Olaf Barthel, alle Rechte vorbehalten.
  5.    Es   wird   keinerlei   Gewährleistungspflicht   für   die  vollständige
  6. Funktionsfähigkeit   der   in   diesem   Dokument   beschriebenen  Software
  7. übernommen.  Jegliche Nutzung geschieht auf eigene Gefahr.
  8.  
  9. ================================ WICHTIG! =================================
  10. ===========================================================================
  11. Aufgrund   notwendiger  Veränderungen  ist  die  neue  Bibliothek  und  die
  12. beiliegende      Unterstützungssoftware      inkompatibel     mit     alten
  13. `Shutdown'-Versionen.    Vor   der   Neuinstallation   bitte   alle   alten
  14. `Shutdown'-Bestandteile aus dem System enfernen!
  15.  
  16. =============================== Motivation ================================
  17. ===========================================================================
  18. Eine  der  wohl nützlichsten Funktionen im `Finder' des Apple Macintosh ist
  19. der  Menüpunkt  `Ausschalten',  mit  dem  das Betriebssystem dazu veranlaßt
  20. wird,  alle  noch  ausstehenden  Datenpuffer  zurückzuschreiben,  Disketten
  21. auszuwerfen  und  auf  den  teureren  Macintosh  II-Modellen sogar wirklich
  22. Rechner und Monitor ausschaltet.  Auf diese Weise sinkt die Chance, daß der
  23. Benutzer   durch  Tolpatschigkeit  den  Disketten-  oder  Festplatteninhalt
  24. zerstört,   weil   der  Rechner  noch  während  Dateien  bearbeitet  wurden
  25. ausgeschaltet  wurde  (daß  man sich trotzdem auf dem Macintosh ohne großen
  26. Aufwand  und  mit Bravour den Festplatteninhalt zertrümmern kann, steht auf
  27. einem anderen Blatt).
  28.    Das  beiliegende  Programmpaket,  bestehend  aus  einer Bibliothek, zwei
  29. Programmen und einem ARexx-Skript, ermöglicht es dem Anwender, in ähnlicher
  30. Manier  auf  eine  relativ  sichere  Weise den Rechner neu zu starten, bzw.
  31. auszuschalten.
  32.  
  33. ==================== Bestandteile des Shutdown-Paketes ====================
  34. ===========================================================================
  35.              Die folgenden Dateien gehören zum Shutdown-Paket:
  36.  
  37. Shutdown.dok...................    Die Dokumentation
  38.  
  39. shutdown.library............... Die     alle     Funktionen    beinhaltende
  40.                                 Bibliothek.
  41. shutdown_lib.fd................    Funktionsdefinitionen der Bibliothek.
  42. shutdownbase.h.................    Header-Datei für `C' Programmierer
  43.  
  44. ShutdownSetup.................. Das Programm, das die Bibliothek öffnet und
  45.                                 die notwendigen Initialisierungen vornimmt,
  46.                                 um  das Öffnen und Schließen von Dateien zu
  47.                                 überwachen.
  48. Shutdown....................... Ein  Beispielprogramm, das die Funktion der
  49.                                 Bibliothek demonstriert.
  50. Shutdown.c..................... Der  in  `C'  geschriebene  Quellcode   des
  51.                                 Programmes.
  52. Shutdown.rexx.................. Ein     ARexx-Beispielskript,    das    die
  53.                                 Ansteuerung  der  Bibliothek  von ARexx aus
  54.                                 demonstriert.
  55.  
  56. ================= Installation und Arbeitsvoraussetzungen =================
  57. ===========================================================================
  58. Das Shutdown-Paket benötigt zum korrekten Funktionieren Kickstart 2.04 oder
  59. eine Nachfolgeversion.  Läuft das Programmsystem auf einem Rechner, der die
  60. Verwendung  von  sogenannten  `Keyboard-Resethandlern' unterstützt, so wird
  61. versucht, daraus Vorteil zu ziehen.
  62.  
  63.     Um das Paket zu installieren, sind folgende Schritte durchzuführen:
  64.  
  65. 1. Die  Datei `shutdown.library' muß ins Verzeichnis `Libs:' kopiert werden
  66.    (aus der Shell heraus:  `Copy shutdown.library Libs:').
  67.  
  68. 2. Die  Datei `ShutdownSetup'  muß ins Verzeichnis `C:' kopiert werden (aus
  69.    der Shell heraus: `Copy ShutdownSetup C:').
  70.  
  71. 3. Gleich  an  den  Anfang  der  Datei  `S:Startup-Sequence' muß der Befehl
  72.    `ShutdownSetup'   gestellt   werden   (aus   der   Shell   heraus:   `Ed
  73.    S:Startup-Sequence', in  die  erste Zeile `ShutdownSetup' tippen und die
  74.    Datei wieder abspeichern).
  75.  
  76.                 Hiermit ist die Installation abgeschlossen.
  77.  
  78. ============================= Funktionsweise ==============================
  79. ===========================================================================
  80. Wird das Programmsystem mit dem Aufruf `ShutdownSetup' aktiviert, so werden
  81. alle  nachfolgend  durchgeführten  Dateizugriffe  vermerkt und insbesondere
  82. darauf  geachtet,  ob  schreibend  auf Dateien zugegriffen wurde (zu diesem
  83. Zweck  wird  eine  Handvoll  Systemfunktionen umgelenkt, falls also diverse
  84. Virenerkennungsfunktionen  zu  meckern  beginnen,  sollte  man  sich  nicht
  85. wundern).
  86.    Zusätzlich  haben  Anwenderprogramme  die Möglichkeit, sich als Klienten
  87. eintragen  zu  lassen,  um  dem  Anwender  vor dem Ausschalten des Rechners
  88. mitzuteilen, daß sie noch arbeiten und der Rechner noch nicht ausgeschaltet
  89. werden sollte.
  90.  
  91.    Wird  dem  Programmsystem  mitgeteilt,  daß der Anwender den Rechner neu
  92. starten   oder   ausschalten   möchte,   so  werden  zunächst  einmal  alle
  93. Dateizugriffe  blockiert.   Danach  werden  alle als Klienten registrierten
  94. Anwenderprogramme  befragt, ob sie ihre Arbeit beendet haben.  Anschließend
  95. wird  nachgeprüft,  ob  noch  Dateien  geöffnet  sind,  auf  die schreibend
  96. zugegriffen wurde.
  97.  
  98.    Wurden  Klienten  gefunden, die ihre Arbeit noch nicht beendet haben, so
  99. wird  der Anwender auf die Namen der Programme aufmerksam gemacht, die noch
  100. aktiv  sind.  Wurden noch geöffnete Dateien ermittelt, so werden ihre Namen
  101. in einer Liste angezeigt.
  102.  
  103.    Stehen dem Neustart bzw.  Ausschalten des Rechners keinerlei Hindernisse
  104. im  Wege,  so  wird  dem  Anwender  signalisiert,  daß er den Rechner jetzt
  105. ausschalten  könnte.  Wird im Augenblick des Aufrufs noch auf eine Diskette
  106. oder Festplatte zugegriffen, so wird solange gewartet, bis die noch aktiven
  107. Laufwerke zur Ruhe gekommen sind.
  108.  
  109.    Zusätzlich  besteht über zwei Knöpfe die Möglichkeit, den Rechner neu zu
  110. starten und sofort zur Workbench zurückzukehren, als sei nichts passiert.
  111.  
  112.                                 WARNUNG!!!
  113.  
  114.    Das  Programmsystem  ist nicht 100%-ig dazu in der Lage, Schreibzugriffe
  115. auf  Festplatte  und  Diskette zu ermitteln und zu sperren.  Sollte nachdem
  116. der   Ausschalt-Bildschirm   geöffnet   wurde,   noch   Festplatten-   oder
  117. Diskettenaktivität zu beobachten sein, sollte man lieber noch etwas warten,
  118. bis  der  Rechner  vollständig  zur  Ruhe  gekommen ist!  WER DURCH BLINDES
  119. VERTRAUEN IN DIE FÄHIGKEITEN DIESES PROGRAMMPAKETES DATEN ZERSTÖRT, DER IST
  120. SELBER SCHULD -- MAN BENUTZE BITTE SEINEN GESUNDEN MENSCHENVERSTAND, DIESES
  121. PROGRAMMSYSTEM  GIBT NUR RATSCHLÄGE UND ÄUßERT VERMUTUNGEN, GIBT ABER KEINE
  122. 100%-IGE SICHERHEIT!
  123.  
  124. ============================== ShutdownSetup ==============================
  125. ===========================================================================
  126. Dieses  Programm dient zum Initialisieren und Entfernen der Dateiverfolgung
  127. und  Geräteüberwachung,  die  das  Herzstück  des `Shutdown'-Programmpakets
  128. bilden.    Zusätzlich   wird   über  das  Commodities-Toolkit  ein  Routine
  129. installiert,  die  beim  Drücken  einer  bestimmten  Tastenkombination  den
  130. Rechner  neu  startet,  gerade so, als hätte man die Tasten Control + Amiga
  131. links  +  Amiga  rechts  gedrückt.   `ShutdownSetup' kann nur von der Shell
  132. gestartet werden und unterstützt drei Aufrufparameter:
  133.  
  134.    CX_POPKEY........... Die Tastenkombination, die gedrückt werden muß,  um
  135.                         den Rechner neu zu starten. Standardmäßig ist  hier
  136.                         `lamiga ramiga tab' vorgegeben.
  137.  
  138.    CX_PRIORITY......... Die Priorität,  unter  der  die  Tastenabfrage  ins
  139.                         System eingebunden werden soll.
  140.  
  141.    NoCX................ Wird  dieser  Parameter  angegeben,  so  wird   die
  142.                         Tastenkombination  zum   neustarten   des  Rechners
  143.                         nicht aktiviert.
  144.  
  145. Es  ist  in  jedem Fall vorzuziehen, den Amiga über die von `ShutdownSetup'
  146. zur  Verfügung  gestellte  Tastenkombination  anstatt  über Control + Amiga
  147. links   +   Amiga  rechts  neu  zu  starten,  da  die  von  `ShutdownSetup'
  148. installierte  Routine  mehr Zeit zur Überwachung und zum sicheren Schließen
  149. von  Dateien zur Verfügung hat, als die Neustartroutine des Betriebssystems
  150. hat.
  151.  
  152.    Ein  zweiter Aufruf von `ShutdownSetup' entfernt die Dateiverfolgung und
  153. Geräteüberwachung.   Die  Routine,  die auf den Druck der Tastenkombination
  154. zum  neustarten  des  Rechners wartet, läßt sich sowohl über die Shell (per
  155. `Break  <Prozessnummer>', <Prozessnummer> ist die Zahl, die neben dem Namen
  156. `« Neustart »' ausgegeben wird, wenn der `Status' Befehl benutzt wird), als
  157. auch mit Hilfe des Programmes `Exchange' beenden.
  158.  
  159. ======================= Programmiererdokumentation ========================
  160. ===========================================================================
  161. Herzstück des Programmsystems ist die shutdown.library, die drei Funktionen
  162. enthält, die im folgenden beschrieben werden.
  163.  
  164.                                      *
  165.  
  166. Erfolg = Shutdown(Modus)
  167.   D0                D0
  168.  
  169.    Diese  Funktion  öffnet  den Ausschaltbildschirm, fragt die Klienten ab,
  170. zeigt  das  Ergebnis  an  und führt den Neustart durch.  Wurde vom Anwender
  171. kein  Neustart  durchgeführt,  so  liefert  die  Funktion einen Erfolgswert
  172. zurück:
  173.  
  174.    FALSE - Das Öffnen des Ausschaltbildschirms ist fehlgeschlagen.
  175.    TRUE  - Der   Ausschaltbildschirm   wurde  korrekt  geöffnet,  aber  der
  176.            Anwender  hat  sich  dazu entschlossen, den Rechner nicht neu zu
  177.            starten.
  178.  
  179.    In  Version  2.0  wurde  für die Shutdown()-Funktion ein Aufrufparameter
  180. eingeführt:
  181.  
  182.    Modus - Ein  Wert, der angibt, ob das System sofort neu gestartet werden
  183.            soll,  oder  ob der Anwender noch eine Chance erhalten soll, zur
  184.            Workbench zurückzukehren, oder den Rechner auszuschalten:
  185.  
  186.            - SHUTDOWN_NORMAL
  187.  
  188.              Normales Verhalten, der  Benutzer  wird  auf  noch  arbeitende
  189.              Programme und offene Dateien aufmerksam gemacht und erhält die
  190.              Möglichkeit, anstatt den Rechner neu zu  starten,  wieder  zur
  191.              Workbench zurückzukehren.
  192.  
  193.            - SHUTDOWN_FAST
  194.  
  195.              Der Rechner wird nachdem alle offenen Dateien `geflusht' und
  196.              alle Laufwerke zur Ruhe  gekommen  sind,  ohne  Einfluß  des
  197.              Anwenders neu  gestartet.  Diese  Funktionsaufruf  wird  vom
  198.              Programm   `ShutdownSetup'   genutzt,  dessen   Commodities-
  199.              Interface auf Tastendruck den Rechner neu startet.
  200.  
  201.                                      *
  202.  
  203. Info = AddShutdownInfo(Test,Ende,Name,Flags)
  204.  D0                     A0   A1   A2   D0
  205.  
  206.    Diese  Funktion  erzeugt und vermerkt eine Struktur, in der maximal zwei
  207. Funktionen  eingetragen werden, die vor dem Öffnen des Ausschaltbildschirms
  208. und vor der Durchführung des Neustarts aufgerufen werden.
  209.  
  210. Info -  Im Erfolgsfall Zeiger auf eine Struktur vom Typ ShutdownInfo (siehe
  211.         Datei `shutdownbase.h'), andernfalls Null.
  212.            Der  Speicherinhalt  der  zurückgelieferten  Struktur  darf  mit
  213.         Ausnahme   des   sn_UserData-Eintrages,  den  das  sich  anmeldende
  214.         Programm  für  seine  eigenen  Zwecke  nutzen darf, nicht verändert
  215.         werden!
  216.  
  217. Test -  Adresse   der  Routine,  die  aufgerufen  werden  soll,  bevor  der
  218.         Ausschaltbildschirm  geöffnet wird.  Liefert diese Routine den Wert
  219.         FALSE,  so  wird  davon  ausgegangen,  daß  das Programm, das diese
  220.         Routine  enthält, seine Arbeit noch nicht beendet hat.  Die Routine
  221.         wird mit folgenden Parametern aufgerufen:
  222.  
  223.         Ergebnis = Test(Info,Flags)
  224.            D0            A0   D0
  225.  
  226.         Info -  Dieselbe    Adresse,    die    schon    beim   Aufruf   der
  227.                 AddShutdownInfo() Funktion zurückgeliefert wurde.
  228.  
  229.         Flags - Gegenwärtig noch Null.
  230.  
  231. Ende -  Adresse  der Routine, die aufgerufen werden soll, bevor der Rechner
  232.         neu   gestartet  werden  soll.   Die  Routine  wird  mit  folgenden
  233.         Parametern aufgerufen:
  234.  
  235.         Ende(Info,Flags)
  236.               A0   D0
  237.  
  238.         Info -  Dieselbe    Adresse,    die    schon    beim   Aufruf   der
  239.                 AddShutdownInfo() Funktion zurückgeliefert wurde.
  240.  
  241.         Flags - Der  hier  übergebene  Wert  gibt  Auskunft  darüber, unter
  242.                 welchen  Umständen  die  Routine aufgerufen wurde.  Ist das
  243.                 Bit  SNB_RESET  gesetzt,  so  wurde die Routine aufgerufen,
  244.                 nachdem  die berühmte Dreitastenkombination gedrückt wurde,
  245.                 um  den  Rechner  neu  zu  starten.  In diesem Fall hat die
  246.                 aufgerufene Routine nicht sehr viel Zeit, um ihre Arbeit zu
  247.                 verrichten  und  zurückzukehren,  da  der Tastaturprozessor
  248.                 innerhalb von maximal zehn Sekunden selbsttätig den Rechner
  249.                 neu startet -- egal ob die Routine bereits fertig ist, oder
  250.                 nicht!
  251.  
  252. Name -  Der  Name, unter dem das sich anmeldende Programme in der Liste der
  253.         noch aktiven Programme aufgeführt werden soll.
  254.  
  255. Flags - Gegenwärtig solle hier der Wert Null übergeben werden.
  256.  
  257.                                      *
  258.  
  259. Erfolg = RemShutdownInfo(Info)
  260.   D0                      A0
  261.  
  262.    Diese  Funktion  entfernt  eine  mit  der  Funktion  `AddShutdownInfo()'
  263. erzeugte  Struktur  aus  der  Liste  der  vor  dem  Neustarten des Rechners
  264. abzufragenden Programme.
  265.  
  266. Erfolg - Erfolgswert, der  angibt,  ob die Struktur korrekt entfernt werden
  267.          konnte.
  268.  
  269. ============== Verwendung der shutdown.library von ARexx aus ==============
  270. ===========================================================================
  271. Die  Bibliothek  stellt  eine  einzige Funktion zur Verfügung, die nach dem
  272. Einbinden der Bibliothek folgendermaßen anzusprechen ist:
  273.  
  274.                            Ergebnis = shutdown(Parameter)
  275.  
  276. Diese  Funktion  verhält  sich  exakt  so  wie  auch die schon beschriebene
  277. Shutdown()-Funktion  der  Bibliothek.   Konnte  die  Funktion nicht korrekt
  278. ausgeführt  werden,  so  kehrt sie mit Fehlerwert 10 (= Fehlschlag) zurück.
  279.    Es   ist   außerdem   möglich,   daß   sie  als  Ergebniswert  `aborted'
  280. zurückliefert, wenn der Anwender den Rechner nicht neu starten wollte.  Als
  281. Anwendungsbeispiel  ist  dem  Programmpaket  die  Datei `ShutdownTest.rexx'
  282. beigefügt.
  283.    Als  Parameter  kann der Wert `immediately' übergeben werden.  In diesem
  284. Fall  wird  der Rechner ohne Einflußmöglichkeit des Anwenders neu gestartet
  285. (ähnlich  als  hätte man die Libraryfunktion `Shutdown()' mit dem Parameter
  286. `SHUTDOWN_FAST' aufgerufen).
  287.  
  288. ====================== Anschrift & Bitte des Autors =======================
  289. ===========================================================================
  290. Die  Veröffentlichung  dieses  Paketes ist zunächst einmal nur ein Test, ob
  291. Anwender mit  einer `Ausschaltfunktion' überhaupt etwas anfangen können und
  292. ob Programmierer sie unterstützen wollen.  Außerdem möchte ich erfahren, ob
  293. noch Verbesserungen am Leistungsumfang des Paketes notwendig sind.  Bis zur
  294. internationalen    Veröffentlichung    ist   jedermann   freigestellt   das
  295. Programmpaket zu nutzen, soweit es nicht kommerziellen Zwecken dient.  Wenn
  296. jemand  am Verkauf oder der Vermarktung meiner Produkte Geld verdient, dann
  297. bin ich das, und niemand anders!
  298.  
  299.    Fehlermeldungen und Vorschläge sind an folgende Adressen zu richten:
  300.  
  301.                               Postanschrift:
  302.  
  303.                                Olaf Barthel
  304.                              Brabeckstraße 35
  305.                             D-3000 Hannover 71
  306.  
  307.                         Elektronische Postdienste:
  308.  
  309.                         Z-Netz: O.BARTHEL@A-Link-H
  310.                         Usenet: o.barthel@a-link-h.comlink.de
  311.                                 cbmvax.commodore.com!cbmehq!sourcery!olsen
  312.  
  313. ========================= Entwicklungsgeschichte ==========================
  314. ===========================================================================
  315. V2.0    Kleinere interne Veränderungen, `ShutdownSetup' erweitert.
  316.  
  317. V1.8    Auch Lese- und Schreibzugriffe auf Device-Ebene werden jetzt erfaßt
  318.         und verfolgt.
  319.  
  320. V1.7    Internationalisierung des Systems, Dateiverfolgung verbessert.
  321.  
  322. V1.2    Kleinere Veränderungen in der Umlenkung von Systemroutinen.
  323.  
  324. V1.1    Erste Verbreitung im deutschsprachigen Raum.
  325.